package com.fuchuang.seckillsystem.mapper;

import com.fuchuang.seckillsystem.dto.UserQuery;
import com.fuchuang.seckillsystem.entity.SystemUser;
import com.fuchuang.seckillsystem.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    
    int insertSelective(User record);
    
    User selectByPrimaryKey(Integer id);
    
    int updateByPrimaryKeySelective(User record);
    
    /**
     * 通过用户名称查询
     *
     * @param username 用户名
     * @return 用户信息
     */
    User queryUserByUsername(@Param("username") String username);
    
    /**
     * 从系统用户表中查询注册用户信息
     *
     * @param idcard 用户身份证
     * @return 系统用户信息
     */
    SystemUser querySystemUserByIdcard(@Param("idcard") String idcard);
    
    /**
     * 插入模拟银行用户数据
     *
     * @param systemUserList 用户模拟数据
     * @return 受影响行数
     */
    Integer insertSystemUser(List<SystemUser> systemUserList);
    
    /**
     * 通过身份证查询用户
     *
     * @param encodeIdcard 加密后的身份证
     * @return 对应用户的信息
     */
    User queryUserByIdcard(@Param("idcard") String encodeIdcard);
    
    /**
     * 查询所有用户信息
     *
     * @return 用户信息
     */
    List<User> queryAllUser(UserQuery userQuery);
    
    /**
     * 获取所有用户名称
     */
    List<String> getAllUsername();
}